<?php
/**
 * класс CompanyModel
 * модель для страницы компаний 
 */
class CompanyModel extends Model implements IFeed{

    public function __construct() {
        parent::__construct();
        $this->addObserver($this->feedobserver);
    }
    /**
     * вернуть все компании из бд в соответствии с параметрами из
     * объектов $pager, $searcher
     * используется для вывода компаний с пагинацией и поиском
     * @param Pager $pager
     * @param Searcher $searcher
     * @return type 
     */
    public function getAllCompaniesByCriteria(Pager $pager, Searcher $searcher) {
        //устновить в поле $pager сколько всего компаний в БД
        $pager->setTotalNumOfItems($this->getNumOfCompaniesByCriteria($searcher));
        //запрос компаний с критериями пагинатор и поиска
        $query = $this->db->query("SELECT * FROM companies ".$searcher->getWhereSQL()." LIMIT ".$pager->getLimitFrom().",".$pager->getLimitTo()."");
        return $query->rows;
        
    }
    /**
     * Просто получание всех компаний
     * @return type 
     */
    public function getAllCompanies() {
        $query = $this->db->query("SELECT * FROM companies");
        return $query->rows;
        
    }
    /**
     * Получить количество компаний по заданному критерию поиска
     * @param Searcher $searcher
     * @return type 
     */
    public function getNumOfCompaniesByCriteria(Searcher $searcher) {
        $total = $this->db->query("SELECT COUNT(name) AS num FROM companies ".$searcher->getWhereSQL()."");
        $total = $total->row['num'][0];
        return $total;
    }
    /**
     * Добавить компанию
     * @param type $data
     * @return type 
     */
    public function insertCompany($data) {
        
        $result = $this->db->query("INSERT INTO companies (name, address, sphere) VALUES ('" . $data['name'] . "', '" . $data['address'] . "', '" . $data['sphere'] . "')");
        $id = mysql_insert_id();
        if ($result)
            $this->fireEvent('feed', array('what' => $id, 'action' => __METHOD__));
        return $id;
    }
    /**
     * Получить компанию по id
     * @param type $id
     * @return type 
     */
    public function getCompanyById($id) {
        $data = $this->db->query("SELECT * FROM companies WHERE company_id='" . intval($id) . "' LIMIT 1");
         return $data->row;
    }
    /**
     * Получить владельца компании по id компании
     * @param type $id
     * @return type 
     */
    public function getCompanyOwner($id) {
         $data = $this->db->query("SELECT * FROM users WHERE ownerof='" . intval($id) . "' LIMIT 1");
         return $data->row;
    }
    /**
     * Реализация интерфейса IFeed
     * @param type $actionName
     * @param type $what_id
     * @return type 
     */
    public function getFeedInfo($actionName, $what_id) {
        switch ($actionName) {
            case 'insertCompany':

                return array('text' => "%who добавил компанию %what", 'who_link' => 'LR/profile/show/%who', 'what_link' => 'Company/profile/%what');

            default:
                return;
        }
    }
    /**
     * Реализация интерфейса IFeed
     * @param type $id
     * @return boolean 
     */
    public function getNameById($id) {
        if ($data = $this->getCompanyById($id)) {
            return $data['name'];
        }
        else
            return false;
    }
}
?>